import request from "@/utils/request";

const BASE_URL = "/payment";

class PaymentAPI {
  static getOrderEnum() {
    return request<any, any>({
      url: `${BASE_URL}/order/getOrderTypes`,
      method: "get",
    });
  }
  static getOrderDetail(id: string) {
    return request<any, PaymentOrderDetailVO>({
      url: `${BASE_URL}/order/get`,
      method: "get",
      params: {
        id,
      },
    });
  }

  /** 获取主商家分页数据 */
  static getStoreList(queryParams?: PaymentStoreQuery) {
    return request<any, PageResult<PaymentStoreVO[]>>({
      url: `${BASE_URL}/merchant/list`,
      method: "get",
      params: queryParams,
    });
  }

  /** 获取主商家下拉数据 */
  static getStoreOptions() {
    return request<any, PaymentStoreVO[]>({
      url: `${BASE_URL}/merchant/getList`,
      method: "get",
    });
  }
  /** 获取子商家分页数据 */
  static getSubStoreList(queryParams?: PaymentStoreQuery) {
    return request<any, PageResult<PaymentSubStoreVO[]>>({
      url: `${BASE_URL}/submerchant/list`,
      method: "get",
      params: queryParams,
    });
  }

  static updateSubStore(data: PaymentSubStoreVO) {
    return request<any, any>({
      url: `${BASE_URL}/submerchant/update`,
      method: "post",
      data,
    });
  }
  static addSubStore(data: PaymentSubStoreVO) {
    return request<any, any>({
      url: `${BASE_URL}/submerchant/add`,
      method: "post",
      data,
    });
  }

  /** 获取订单分页数据 */
  static getOrderList(queryParams?: PaymentOrderQuery) {
    return request<any, PageResult<PaymentOrderVO[]>>({
      url: `${BASE_URL}/order/list`,
      method: "get",
      params: queryParams,
    });
  }

  static updateSetting(data: PaymentSettingVO) {
    return request<any, any>({
      url: `${BASE_URL}/setting/update`,
      method: "post",
      data,
    });
  }

  static addSetting(data: PaymentSettingVO) {
    return request<any, any>({
      url: `${BASE_URL}/setting/add`,
      method: "post",
      data,
    });
  }

  static getSettingDetail(storeCode: string) {
    return request<any, PaymentSettingVO>({
      url: `${BASE_URL}/setting/getByStoreCode`,
      method: "get",
      params: { storeCode },
    });
  }

  static updateLklSetting(data: PaymentLklSettingVO) {
    return request<any, any>({
      url: `${BASE_URL}/merchant/update`,
      method: "post",
      data,
    });
  }
  static addLklSetting(data: PaymentLklSettingVO) {
    return request<any, any>({
      url: `${BASE_URL}/merchant/add`,
      method: "post",
      data,
    });
  }

  static getLklSettingDetail(storeCode: string) {
    return request<any, PaymentSettingVO>({
      url: `${BASE_URL}/merchant/getByStoreCode`,
      method: "get",
      params: { storeCode },
    });
  }
}

export default PaymentAPI;

export interface PaymentOrderDetailVO {
  //支付通道 1拉卡拉
  channelType?: number;
  channelTypeName?: string;
  //
  id?: number;
  //订单标题
  title?: string;
  /** 商户号 */
  merchantNo?: string;
  //聚合支付商户交易流水号
  orderCode?: string;
  //聚合支付通道交易流水号
  paymentOrderCode?: string;
  //对账单流水号
  logNo?: string;
  //交易流水号
  tradeNo?: string;
  //订单类型，订单类型，1-商城自营订单，2-门店订单，3-供应链订单，4-销售ID号订单，5-子ID号转让订单，6-其他订单
  orderType?: number;
  orderTypeName?: string;
  //支付方式 1微信，2支付宝，3银联，4翼支付，5苏宁易付宝，6拉卡拉支付账户，7网联小钱包
  payType?: number;
  payTypeName?: string;
  //结算类型 0常规结算 1分账结算
  settleType?: number;
  settleTypeName?: string;
  //分账总金额（元）
  totalSeparatePrice?: number;
  //剩余分账金额
  subSeparatePrice?: number;
  //0初始化，1下单成功，9交易成功，-1交易失败，5交易处理中，2未知状态，99订单关闭，3部分退款，4全部退款(或订单被撤销）
  status?: number;
  statusName?: string;
  //订单金额（元）
  orderPrice?: number;
  //实际支付金额（元）
  payPrice?: number;
  //订单通知地址
  notifyUrl?: string;
  //自定义参数
  attach?: string;
  //支付时间
  payTime?: string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
  //请求日期，交易时传入，格式yyyyMMdd
  reqDate?: string;
  //自定义参数(预留)，通知原样返回
  passBack?: string;
  nothing?: string;
}

/** 子商家 */
export interface PaymentSubStoreVO {
  //
  id?: number;
  //内部商户号
  merInnerNo?: string;
  //银联商户号
  merCupNo?: string;
  //主商户编号
  parentMerchantNo?: string;
  //商户注册名称
  registerName?: string;
  //商户经营名称
  operateName?: string;
  //交易设备标识
  vposId?: string;
  //营业执照编码
  merBlis?: string;
  //拉卡拉地区编码
  areaId?: number;
  //终端号
  termNo?: string;
  //B2B收银台-银行卡终端号
  termCardNo?: string;
  //专业化扫码支付终端号
  termProfessionNo?: string;
  //商户联系人
  managerName?: string;
  //商户联系人电话
  managerTel?: string;
  //提款模式(01主动提款 02自动结算)
  settleType?: number;
  //商户分账状态:1启用/0禁用
  splitStatus?: number;
  //平台分账绑定状态 0未绑定 1绑定
  separateBindStatus?: number;
  //子商户创建时间
  subMerchantCreatedTime?: string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}

/** 主商家 */
export interface PaymentStoreVO {
  //
  id?: number;
  //商户注册名称
  name?: string;
  //支付通道类型：1拉卡拉
  channelType?: number;
  channelTypeName?: string;
  //商户编号
  storeCode?: string;
  //状态 0禁用，1启用
  status?: number;
  //密钥类型，1商户独立密钥，2服务商统一密钥
  keyType?: number;
  //系统号
  systemId?: string;
  //产品号
  productId?: string;
  //接入方唯一编号
  appid?: string;
  //证书序列号
  serialNo?: string;
  //私钥证书文件
  serialKey?: string;
  //钥证书文件
  publicKey?: string;
  //银联商户号(822)
  merCupNo?: string;
  //聚合支付商户号
  merchantNo?: string;
  //终端号
  termNo?: string;
  //B2B收银台-银行卡终端号
  termCardNo?: string;
  //专业化扫码支付终端号
  termProfessionNo?: string;
  //交易设备标识
  vposId?: string;
  //国密4
  sm4Key?: string;
  //支付类型，微信：WECHAT 支付宝：ALIPAY，多个用逗号分割
  payType?: string;
  //拉卡拉收银台订单创建接口版本，0-新，1-旧
  cashType?: number;
  //分账类型，订单分账：TR，余额分账：BA，多个用逗号分割
  separateType?: string;
  //机构代码
  orgCode?: string;
  //回调地址
  urlAddress?: string;
  //提款模式(01主动提款 02自动结算)
  settleType?: string;
  //结算周期,T1:T1(下个工作日到账)，D1:D1（下个自然日到账）
  settlementCycle?: string;
  //接收方编号
  receiverNo?: string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}

/** 主商家查询 */
export interface PaymentStoreQuery extends PageQuery, PaymentStoreVO {
  /** 搜索关键字 */
  keywords?: string;
}

/** 角色分页对象 */
export interface PaymentOrderVO {
  // id
  id?: number;
  //订单标题
  title?: string;
  //商户号
  merchantNo?: string;
  //聚合支付商户交易流水号
  orderCode?: string;
  //聚合支付通道交易流水号
  paymentOrderCode?: string;
  //对账单流水号
  logNo?: string;
  //交易流水号
  tradeNo?: string;
  //订单类型，订单类型，1-商城自营订单，2-门店订单，3-供应链订单，4-销售ID号订单，5-子ID号转让订单，6-其他订单
  orderType?: number;
  //支付方式 1微信，2支付宝，3银联，4翼支付，5苏宁易付宝，6拉卡拉支付账户，7网联小钱包
  payType?: number;
  //结算类型 0常规结算 1分账结算
  settleType?: number;
  //分账总金额（元）
  totalSeparatePrice?: number;
  //剩余分账金额
  subSeparatePrice?: number;
  //0初始化，1下单成功，9交易成功，-1交易失败，5交易处理中，2未知状态，99订单关闭，3部分退款，4全部退款(或订单被撤销）
  status?: number;
  //订单金额（元）
  orderPrice?: number;
  //实际支付金额（元）
  payPrice?: number;
  //订单通知地址
  notifyUrl?: string;
  //自定义参数
  attach?: string;
  //支付时间
  payTime?: string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
  //请求日期，交易时传入，格式yyyyMMdd
  reqDate?: string;
  //自定义参数(预留)，通知原样返回
  passBack?: string;
}

/** 角色分页查询参数 */
export interface PaymentOrderQuery extends PageQuery, PaymentOrderVO {
  /** 搜索关键字 */
  keywords?: string;
}

export interface PaymentSettingVO {
  //
  id?: number;
  //商户编号
  storeCode?: string;
  //状态 0禁用1启用
  status?: number;
  //渠道：1-lakala。代码中有枚举
  channelType?: number;
  //支付类型,多个用逗号分割
  payType?: string | string[];
  //分账类型,多个用逗号分割
  separateType?: string | string[];
  //是否显示分账,0-否，1-是
  isShow?: number;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}

export interface PaymentLklSettingVO {
  //
  id?: number;
  //商户注册名称
  name?: string;
  //支付通道类型：1拉卡拉
  channelType?: number;
  //商户编号
  storeCode?: string;
  //状态 0禁用，1启用
  status?: number;
  //密钥类型，1商户独立密钥，2服务商统一密钥
  keyType?: number;
  //系统号
  systemId?: string;
  //产品号
  productId?: string;
  //接入方唯一编号
  appid?: string;
  //证书序列号
  serialNo?: string;
  //私钥证书文件
  serialKey?: string;
  //钥证书文件
  publicKey?: string;
  //银联商户号(822)
  merCupNo?: string;
  //聚合支付商户号
  merchantNo?: string;
  //终端号
  termNo?: string;
  //B2B收银台-银行卡终端号
  termCardNo?: string;
  //专业化扫码支付终端号
  termProfessionNo?: string;
  //交易设备标识
  vposId?: string;
  //国密4
  sm4Key?: string;
  //支付类型，微信：WECHAT 支付宝：ALIPAY，多个用逗号分割
  payType?: string | string[];
  //拉卡拉收银台订单创建接口版本，0-新，1-旧
  cashType?: number;
  //分账类型，订单分账：TR，余额分账：BA，多个用逗号分割
  separateType?: string | string[];
  //机构代码
  orgCode?: string;
  //回调地址
  urlAddress?: string;
  //提款模式(01主动提款 02自动结算)
  settleType?: string;
  //结算周期,T1:T1(下个工作日到账)，D1:D1（下个自然日到账）
  settlementCycle?: string;
  //接收方编号
  receiverNo?: string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}
